<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>class类继承-面试题</title>
</head>

<body>
  <script>
    /* 
      Array、Error等内置对象，在ES6中可以通过this访问父类的内部属性和方法，从而继承内置对象
    */

    class People1 {
      constructor() {
        this.name = "strick"
        this.age = 28
      }

      static getName() {
        return this.name
      }

      static getAge() {
        return this.age
      }
    }

    console.log(People1.getName())   // People       每个类默认都有一个name属性
    console.log(People1.getAge())    // undefined

    var people1 = new People1()
    // console.log(people1.getName())   // 报错 实例对象不能调用 静态方法
    // console.log(people1.getAge())    // 报错
    console.log(people1.name)
    console.log(people1.age)

    console.log("第一题")

    class People2 {
      constructor() {
        this.age = 28
      }
      getAge() {
        return this.age
      }
      static getAge() {
        return this.age
      }
    }

    class Man extends People2 {
      constructor() {
        // 初始化原型链上的东西
        super()
        this.age = 29
      }

      // static age = 32

      getAge() {
        return super.getAge()
        // return 36
      }
      static getAge() {
        return super.getAge()
        // return 48
      }
    }

    Man.age = 30                      // 静态属性进行赋值
    var man = new Man()
    
    console.log(Man.getAge())         // 当类里面有重名的静态方法和原型链上的方法 优先考虑静态方法
    console.log(man.getAge())         // 实例对象要找原型链上的方法和属性

    console.log("第二题")

  </script>
</body>

</html>